package com.abing.template.controller;

import com.abing.template.factory.TemplateFactory;
import com.abing.template.template1.AbstractPayCallbackTemplate;
import com.abing.template.template1.impl.AliPayCallbackTemplate;
import com.abing.template.template1.impl.UnionPayCallbackTemplate;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 模板方法
 */

@RestController
public class TemplateController {

    @RequestMapping("/tmplateId")
    public String template(String tmplateId){
        AbstractPayCallbackTemplate payCallbackTemplate = TemplateFactory.getPayCallbackTemplate(tmplateId);
        // 使用模版方法模式 执行共同的骨架
        return payCallbackTemplate.asyncCallBack();
    }


    public static void main(String[] args) {
        AbstractPayCallbackTemplate abstractPayCallbackTemplate=new AliPayCallbackTemplate();
        System.out.println(abstractPayCallbackTemplate.asyncCallBack());

        abstractPayCallbackTemplate=new UnionPayCallbackTemplate();
        System.out.println(abstractPayCallbackTemplate.asyncCallBack());
    }
}
